A middlebox is a network appliance that manipulates internet traffic by optimizing data flow across the network. Middleboxes may be configured as wide area network (“WAN”) optimizers and may be deployed in pairs across two geographically separated locations to optimize data traffic between the two middleboxes. Middleboxes may be connected through a single link or multiple links such as a leased line link and a broadband link.
Middleboxes, such as WAN optimizers, use TCP congestion avoidance algorithms, commonly called “TCP flavors,” to optimize TCP data flows as part of a quality of service (“QoS”) scheme. TCP flavors improve quality of service across TCP connections by avoiding packet loss and connection failure due to TCP traffic congestion.
Common examples of TCP avoidance flavors include algorithms such as TCP Vegas, TCP Reno, TCP NewReno, TCP Hybla, TCP BIC, and TCP CUBIC, among others. Each TCP congestion avoidance flavor is suited for optimizing data flows originating from or received by particular operating systems, link types, and/or other network characteristics. For example, “Compound TCP,” the default TCP flavor in a recent Microsoft™ Windows™ operating system uses queuing delay and packet loss as the feedback signal. “CUBIC TCP,” the default TCP flavor in many Linux™-based systems uses packet loss as the feedback signal. But a single TCP flavor may not suit multiple data flow conditions, which can dynamically change with time based on data flow considerations like packet round trip time (RTT), total packet loss, etc. For example, a link using “TCP flavor A” may be suited for the flow conditions on a static (dedicated/proxied) link shared between two middlebox appliances. Over time the same link can become heavily loaded and congested, and “TCP flavor A” may become a poor choice for the current TCP characteristics. Instead, “TCP flavor B” may be optimal to minimize packet loss, and maximize packet throughput and round trip times. Conventional middlebox appliances, however, cannot select and apply TCP flavors to an uninterrupted data stream based on dynamically changing network traffic characteristics.
Moreover, some middlebox appliances can host multiple links of the same type, or a combination of different media ports on the same device, such as broadband links, leased line links, wireless links, etc. A particular congestion avoidance flavor may work optimally with a particular link type and/or with a particular range of bandwidths, but be less than optimal with other link types and bandwidths as traffic conditions change over time.